home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / GNU_C++ / LIB / GEMLIB38.LZH / include / gemx.h < prev   
Encoding:
C/C++ Source or Header  |  1998-07-11  |  29.9 KB  |  750 lines

  1. /*
  2.  * gemx.h - main header file for new gem-lib extensions
  3.  *
  4.  * This lib contains all GEM extensions of MagiC and NVDI/FSM/Speedo
  5.  *
  6.  */
  7. #ifndef _GEMLIB_X_H_
  8. #define _GEMLIB_X_H_
  9.  
  10. #include <gem.h>
  11.  
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15.  
  16. /*******************************************************************************
  17.  * The AES extentsions of MagiC
  18. */
  19.  
  20. typedef struct
  21. {
  22.     short mwhich;             /* Art der Ereignisse                      */
  23.     short mx;                /* x-Koordinate des Mauszeigers       */
  24.     short my;                /* y-Koordinate des Mauszeigers       */
  25.     short mbutton;         /* gedrückte Maustaste                   */
  26.     short kstate;            /* Status der Sondertasten (kbshift) */
  27.     short key;                /* Scancode der gedrückten Taste        */
  28.     short mclicks;         /* Anzahl der Mausklicks                    */
  29.     short reserved[9];    /* reserviert                               */
  30.     short msg[16];         /* Message-Buffer                          */
  31. } EVNT;
  32.  
  33. /*
  34.  * Extensions to the form library (MagiC only)
  35. */
  36. typedef struct
  37. {
  38.     char    scancode;
  39.     char    nclicks;
  40.     short objnr;
  41. } SCANX;
  42.  
  43. typedef struct
  44. {
  45.     SCANX *unsh;            /* Tabellen für UnShift-Kombinationen     */
  46.     SCANX *shift;            /* Tabellen für Shift-Kombinationen     */
  47.     SCANX *ctrl;            /* Tabellen für Control-Kombinationen     */
  48.     SCANX *alt;             /* Tabellen für Alternate-Kombinationen */
  49.     void    *resvd;            /* reserviert */
  50. } XDO_INF;
  51.  
  52. extern int form_popup     (OBJECT *tree, int x, int y);
  53. extern int form_wbutton    (OBJECT *fo_btree, int fo_bobject, int fo_bclicks, int *fo_bnxtobj, int whandle);
  54. extern int form_wkeybd    (OBJECT *fo_ktree, int fo_kobject, int fo_kobnext, int fo_kchar, int *fo_knxtobject, int *fo_knxtchar, int whandle);
  55. extern int form_xdial     (int fo_diflag, int fo_dilittlx, int fo_dilittly, int fo_dilittlw, int fo_dilittlh, int fo_dibigx, int fo_dibigy, int fo_dibigw, int fo_dibigh, void **flydial);
  56. extern int form_xdo        (OBJECT *tree, int startob, int *lastcrsr, XDO_INF *tabs, void *flydial); 
  57. extern int form_xerr        (long errcode, char *errfile);
  58.  
  59.  
  60. /*
  61.  * Extensions to the object library (MagiC only)
  62. */
  63. extern void objc_wchange    (OBJECT *tree, int obj, int new_state, GRECT *clip,  int whandle);
  64. extern void objc_wdraw        (OBJECT *tree, int start, int depth, GRECT *clip,  int whandle);
  65. extern int    objc_wedit        (OBJECT *tree, int obj, int key, int *idx, int kind, int whandle);
  66. extern int    objc_xedit        (OBJECT *tree, int obj, int key, int *xpos, int subfn, GRECT *r);
  67.  
  68.  
  69. /*
  70.  * fnts_*    font selection (MagiC/WDIALOG only)
  71. */
  72. typedef void *FNT_DIALOG;
  73. typedef void (__CDECL *UTXT_FN)(short x, short y, short *clip_rect, long id, long pt, long ratio, char *string);
  74.  
  75. typedef struct _fnts_item
  76. {
  77.     struct    _fnts_item    *next;    /* Zeiger auf den nächsten Font oder 0L (Ende der Liste) */
  78.     UTXT_FN    display;                 /* Zeiger auf die Anzeige-Funktion für applikationseigene Fonts */
  79.     long        id;                        /* ID des Fonts, >= 65536 für applikationseigene Fonts */
  80.     short     index;                    /* Index des Fonts (falls VDI-Font) */
  81.     char        mono;                     /* Flag für äquidistante Fonts */
  82.     char        outline;                 /* Flag für Vektorfont */
  83.     short     npts;                     /* Anzahl der vordefinierten Punkthöhen */
  84.     char        *full_name;             /* Zeiger auf den vollständigen Namen */
  85.     char        *family_name;            /* Zeiger auf den Familiennamen */
  86.     char        *style_name;            /* Zeiger auf den Stilnamen */
  87.     char        *pts;                     /* Zeiger auf Feld mit Punkthöhen */
  88.     long        reserved[4];            /* reserviert, müssen 0 sein */
  89. } FNTS_ITEM;
  90.  
  91. /* Definitionen für <font_flags> bei fnts_create() */
  92. #define FNTS_BTMP         1            /* Bitmapfonts anzeigen */
  93. #define FNTS_OUTL         2            /* Vektorfonts anzeigen */
  94. #define FNTS_MONO         4            /* äquidistante Fonts anzeigen */
  95. #define FNTS_PROP         8            /* proportionale Fonts anzeigen */
  96.  
  97. /* Definitionen für <dialog_flags> bei fnts_create() */
  98. #define FNTS_3D            1            /* 3D-Design benutzen */
  99.  
  100. /* Definitionen für <button_flags> bei fnts_open() */
  101. #define FNTS_SNAME        0x01        /* Checkbox für die Namen selektieren */
  102. #define FNTS_SSTYLE        0x02        /* Checkbox für die Stile selektieren */
  103. #define FNTS_SSIZE        0x04        /* Checkbox für die Höhe selektieren */
  104. #define FNTS_SRATIO        0x08        /* Checkbox für das Verhältnis Breite/Höhe selektieren */
  105.  
  106. #define FNTS_CHNAME        0x0100    /* Checkbox für die Namen anzeigen */
  107. #define FNTS_CHSTYLE     0x0200    /* Checkbox für die Stile anzeigen */
  108. #define FNTS_CHSIZE        0x0400    /* Checkbox für die Höhe anzeigen */
  109. #define FNTS_CHRATIO     0x0800    /* Checkbox für das Verhältnis Breite/Höhe anzeigen */
  110. #define FNTS_RATIO        0x1000    /* Verhältnis Breite/Höhe einstellbar */
  111. #define FNTS_BSET         0x2000    /* Button "setzen" anwählbar */
  112. #define FNTS_BMARK        0x4000    /* Button "markieren" anwählbar */
  113.  
  114. /* Definitionen für <button> bei fnts_evnt() */
  115. #define FNTS_CANCEL        1            /* "Abbruch" wurde angewählt */
  116. #define FNTS_OK            2            /* "OK" wurde gedrückt */
  117. #define FNTS_SET            3            /* "setzen" wurde angewählt */
  118. #define FNTS_MARK         4            /* "markieren" wurde betätigt */
  119. #define FNTS_OPT            5            /* der applikationseigene Button wurde ausgewählt */
  120.  
  121. extern int    fnts_add                 (FNT_DIALOG *fnt_dialog, FNTS_ITEM *user_fonts);
  122. extern int    fnts_close                (FNT_DIALOG *fnt_dialog, int *x, int *y);
  123. extern FNT_DIALOG    *fnts_create    (int vdi_handle, int no_fonts, int font_flags, int dialog_flags, char *sample, char *opt_button);
  124. extern int    fnts_delete             (FNT_DIALOG *fnt_dialog, int vdi_handle);
  125. extern int    fnts_do                    (FNT_DIALOG *fnt_dialog, int button_flags, long id_in, long pt_in, long ratio_in, int *check_boxes, long *id, long *pt, long *ratio);
  126. extern int    fnts_evnt                (FNT_DIALOG *fnt_dialog, EVNT *events, int *button, int *check_boxes, long *id, long *pt, long *ratio);
  127. extern int    fnts_get_info            (FNT_DIALOG *fnt_dialog, long id, int *mono, int *outline);
  128. extern int    fnts_get_name            (FNT_DIALOG *fnt_dialog, long id, char *full_name, char *family_name, char *style_name);
  129. extern int    fnts_get_no_styles    (FNT_DIALOG *fnt_dialog, long id);
  130. extern long    fnts_get_style         (FNT_DIALOG *fnt_dialog, long id, int index);
  131. extern int    fnts_open                (FNT_DIALOG *fnt_dialog, int button_flags, int x, int y, long id, long pt, long ratio);
  132. extern void    fnts_remove             (FNT_DIALOG *fnt_dialog);
  133. extern int    fnts_update             (FNT_DIALOG *fnt_dialog, int button_flags, long id, long pt, long ratio);
  134.  
  135.  
  136. /*
  137.  * fslx_*    file selection (MagiC only)
  138. */
  139.  
  140. typedef int (__CDECL *XFSL_FILTER)(char *path, char *name, void *xattr);
  141.  
  142. /* Sortiermodi */
  143. #define SORTBYNAME    0
  144. #define SORTBYDATE    1
  145. #define SORTBYSIZE    2
  146. #define SORTBYTYPE    3
  147. #define SORTBYNONE    4
  148.  
  149. /* Flags für Dateiauswahl */
  150. #define DOSMODE        1
  151. #define NFOLLOWSLKS    2
  152. #define GETMULTI        8
  153.  
  154. /* fslx_set_flags */
  155. #define SHOW8P3        1
  156.  
  157. extern int    fslx_close                (void *fsd);
  158. extern void *fslx_do                    (char *title, char *path, int pathlen, char *fname, int fnamelen, char *patterns, XFSL_FILTER filter, char *paths, int *sort_mode, int flags, int *button, int *nfiles, char **pattern);
  159. extern int    fslx_evnt                (void *fsd, EVNT *events, char *path, char *fname, int *button, int *nfiles, int *sort_mode, char **pattern); 
  160. extern int    fslx_getnxtfile        (void *fsd, char *fname);
  161. extern void *fslx_open                (char *title, int x, int y, int *handle, char *path, int pathlen, char *fname, int fnamelen, char *patterns, XFSL_FILTER filter, char *paths, int sort_mode, int flags);
  162. extern int    fslx_set_flags         (int flags, int *oldval);
  163.  
  164. /*
  165.  * pdlg_*    printer configuration dialogs (WDIALOG only)
  166. */
  167.  
  168. #ifdef __GNUC__
  169. /* GNU braucht ein paar 'forwards' */
  170. struct _drv_entry;
  171. struct _prn_entry;
  172. struct _prn_settings;
  173. #endif
  174.  
  175. typedef void *PRN_DIALOG;
  176.  
  177. typedef struct _prn_tray                        /* Beschreibung eines Einzugs/Auswurfs */
  178. {
  179.     struct _prn_tray    *next;
  180.     
  181.     long    tray_id;                                 /* Nummer des Einzugs oder Auswurfs */
  182.     char    name[32];                                /* Name des Schachts */
  183. } PRN_TRAY;
  184.  
  185. typedef struct _media_size                     /* Beschreibung eines Papierformats */
  186. {
  187.     struct _media_size    *next;
  188.  
  189.     long            size_id;                         /* Kennung des Papierformats */
  190.     char            name[32];                        /* Name des Papierformats */
  191. } MEDIA_SIZE;
  192.  
  193. typedef struct _media_type                     /* Beschreibung eines Papiertyps/Druckmediums */
  194. {
  195.     struct _media_type    *next;
  196.  
  197.     long            type_id;                         /* Kennung des Papierformats */
  198.     char            name[32];                        /* Name des Papierformats */
  199. } MEDIA_TYPE;
  200.  
  201. typedef struct _prn_mode                        /* Beschreibung eines Druckermodus */
  202. {
  203.     struct _prn_mode *next;                     /* Zeiger auf den nächsten Druckermodus */
  204.  
  205.     long            mode_id;                         /* Moduskennung (Index innerhalb der Datei) */
  206.     short         hdpi;                             /* horizontale Auflösung in dpi */
  207.     short         vdpi;                             /* vertikale Auflösung in dpi */
  208.     long            mode_capabilities;            /* Moduseigenschaften */
  209.  
  210.     long            color_capabilities;            /* einstellbare Farbmodi */
  211.     long            dither_flags;                    /* Flags, die angeben, ob der korrespondierende Farbmodus mit oder ohne Dithern ansprechbar ist */
  212.     MEDIA_TYPE    *paper_types;                    /* geeignete Papiertypen */
  213.     long            reserved;
  214.  
  215.     char            name[32];                        /* Modusname */
  216. } PRN_MODE;
  217.  
  218. /* sub_flags */
  219. #define    PRN_STD_SUBS    0x0001                /* Standard-Unterdialoge für NVDI-Drucker */
  220. #define    PRN_FSM_SUBS    0x0002                /* Standard-Unterdialoge für FSM-Drucker */
  221. #define    PRN_QD_SUBS     0x0004                /* Standard-Unterdialoge für QuickDraw-Drucker */
  222.  
  223. /* old_printer kann auch 0L sein */
  224. typedef long (__CDECL *PRN_SWITCH)(struct _drv_entry *drivers, struct _prn_settings *settings, struct _prn_entry *old_printer, struct _prn_entry *new_printer);
  225.  
  226. typedef struct _prn_entry                        /* Gerätebeschreibung */
  227. {
  228.     struct _prn_entry *next;                    /* Zeiger auf die die nächste Gerätebeschreibung */
  229.     long            length;                            /* Strukturlänge */
  230.     long            format;                            /* Datenformat */
  231.     long            reserved;                        /* reserviert */
  232.     
  233.     short         driver_id;                        /* Treiberkennung */
  234.     short         driver_type;                    /* Treibertyp */
  235.     long            printer_id;                     /* Druckerkennung */
  236.     long            printer_capabilities;        /* Druckereigenschaften */
  237.     long            reserved1;
  238.  
  239.     long            sub_flags;                        /* Flags für die Unterdialoge */
  240.     struct _pdlg_sub    *sub_dialogs;            /* Zeiger auf die Liste der Unterdialoge für diesen Drucker */
  241.     PRN_SWITCH    setup_panel;                    /* Unterdialog bei Druckerwechsel initialisieren */
  242.     PRN_SWITCH    close_panel;                    /* Unterdialog bei Druckerwechsel schließen */
  243.  
  244.     PRN_MODE     *modes;                            /* Liste der vorhandenen Auflösungen */
  245.     MEDIA_SIZE    *papers;                         /* Liste der vorhandenen Papierformate */
  246.     PRN_TRAY     *input_trays;                    /* Liste der Einzüge */
  247.     PRN_TRAY     *output_trays;                 /* Liste der Auswürfe */
  248.  
  249.     char            name[32];                        /* Name des Druckers */
  250. } PRN_ENTRY;
  251.  
  252. typedef struct _dither_mode
  253. {
  254.     struct _dither_mode    *next;
  255.     long            length;                            /* Strukturlänge */
  256.     long            format;                            /* Datenformat */
  257.     long            reserved;                        /* reserviert */
  258.  
  259.     long            dither_id;                        /* Kennung */
  260.     long            color_modes;                    /* unterstützte Farbtiefen */
  261.     long            reserved1;
  262.     long            reserved2;
  263.  
  264.     char            name[32];                        /* Name des Rasterverfahrens */
  265. } DITHER_MODE;
  266.  
  267.  
  268. typedef struct
  269. {
  270.     long            magic;                            /* 'pdnf' */
  271.     long            length;                            /* Strukturlänge */
  272.     long            format;                            /* Datenformat */
  273.     long            reserved;                        /* reserviert */
  274.  
  275.     short         driver_id;                        /* Treibernummer fürs VDI */
  276.     short         driver_type;                    /* Treibertyp */
  277.     long            reserved1;
  278.     long            reserved2;
  279.     long            reserved3;
  280.  
  281.     PRN_ENTRY    *printers;                        /* Liste der zum Treiber gehörenden Drucker */
  282.     DITHER_MODE *dither_modes;                 /* Liste der vom Treiber unterstützten Rasterverfahren */
  283.     long            reserved4;
  284.     long            reserved5;
  285.  
  286.     long            reserved6;
  287.     long            reserved7;
  288.     long            reserved8;
  289.     long            reserved9;
  290.     
  291.     char            device[128];                    /* Ausgabedatei des Druckertreibers */
  292.     
  293. } DRV_INFO;
  294.  
  295. typedef struct _drv_entry
  296. {
  297.     struct _drv_entry *next;
  298. } DRV_ENTRY;
  299.  
  300. #define    PDLG_CHG_SUB    0x80000000L
  301. #define    PDLG_IS_BUTTON 0x40000000L
  302.  
  303. #define    PDLG_PREBUTTON 0x20000000L
  304. #define    PDLG_PB_OK        1
  305. #define    PDLG_PB_CANCEL 2
  306. #define    PDLG_PB_DEVICE 3
  307.  
  308. #define    PDLG_BUT_OK     ( PDLG_PREBUTTON + PDLG_PB_OK )
  309. #define    PDLG_BUT_CNCL    ( PDLG_PREBUTTON + PDLG_PB_CANCEL )
  310. #define    PDLG_BUT_DEV    ( PDLG_PREBUTTON + PDLG_PB_DEVICE )
  311.  
  312. typedef long (__CDECL *PDLG_INIT)(struct _prn_settings *settings, struct _pdlg_sub *sub);
  313. typedef long (__CDECL *PDLG_HNDL)(struct _prn_settings *settings, struct _pdlg_sub *sub, short exit_obj);
  314. typedef long (__CDECL *PDLG_RESET)(struct _prn_settings *settings, struct _pdlg_sub *sub);
  315.  
  316. typedef struct _pdlg_sub                /* Unterdialog für Geräteeinstellung */
  317. {
  318.     struct _pdlg_sub *next;             /* Zeiger auf den Nachfolger in der Liste */
  319.     long            length;                    /* Strukturlänge */
  320.     long            format;                    /* Datenformat */
  321.     long            reserved;                /* reserviert */
  322.     
  323.     void            *drivers;                /* nur für interne Dialoge */
  324.     short         option_flags;            /* Flags, u.a. PDLG_PRINTING, PDLG_PREFS */
  325.     short         sub_id;                    /* Kennung des Unterdialogs, wird für globale Unterdialoge von pdlg_add() eingetragen */
  326.     void            *dialog;                 /* Zeiger auf die Struktur des Fensterdialogs oder 0L */
  327.     OBJECT        *tree;                    /* Zeiger auf den zusammengesetzen Objektbaum */
  328.     short         index_offset;            /* Indexverschiebung des Unterdialogs */
  329.     short         reserved1;
  330.     long            reserved2;
  331.     long            reserved3;
  332.     long            reserved4;
  333.  
  334.     PDLG_INIT    init_dlg;                /* Initialisierungsfunktion */
  335.     PDLG_HNDL    do_dlg;                    /* Behandlungsfunktion */
  336.     PDLG_RESET    reset_dlg;                /* Zurücksetzfunktion */
  337.     long            reserved5;
  338.  
  339.     OBJECT        *sub_icon;                /* Zeiger auf das Icon für die Listbox */
  340.     OBJECT        *sub_tree;                /* Zeiger auf den Objektbaum des Unterdialogs */
  341.     long            reserved6;
  342.     long            reserved7;
  343.  
  344.     long            private1;                /* dialogeigene Informationen */
  345.     long            private2;
  346.     long            private3;
  347.     long            private4;
  348.  
  349. } PDLG_SUB;
  350.  
  351.  
  352. /*----------------------------------------------------------------------------------------*/ 
  353. /* einstellbare Farbmodi eines Druckermodus                                                                */
  354. /*----------------------------------------------------------------------------------------*/ 
  355. #define    CC_MONO            0x0001        /* 2 Grautöne */
  356. #define    CC_4_GREY        0x0002        /* 4 Grautöne */
  357. #define    CC_8_GREY        0x0004        /* 8 Grautöne */
  358. #define    CC_16_GREY        0x0008        /* 16 Grautöne */
  359. #define    CC_256_GREY     0x0010        /* 256 Grautöne */
  360. #define    CC_32K_GREY     0x0020        /* 32768 Farben in Grautöne wandeln */
  361. #define    CC_65K_GREY     0x0040        /* 65536 Farben in Grautöne wandeln */
  362. #define    CC_16M_GREY     0x0080        /* 16777216 Farben in Grautöne wandeln */
  363.  
  364. #define    CC_2_COLOR        0x0100        /* 2 Farben */
  365. #define    CC_4_COLOR        0x0200        /* 4 Farben */
  366. #define    CC_8_COLOR        0x0400        /* 8 Farben */
  367. #define    CC_16_COLOR     0x0800        /* 16 Farben */
  368. #define    CC_256_COLOR    0x1000        /* 256 Farben */
  369. #define    CC_32K_COLOR    0x2000        /* 32768 Farben */
  370. #define    CC_65K_COLOR    0x4000        /* 65536 Farben */
  371. #define    CC_16M_COLOR    0x8000        /* 16777216 Farben */
  372.  
  373. #define    NO_CC_BITS        16
  374.  
  375. /*----------------------------------------------------------------------------------------*/ 
  376. /* einstellbare Rasterverfahren                                                                                */
  377. /*----------------------------------------------------------------------------------------*/ 
  378. #define    DC_NONE            0                /* keine Rasterverfahren */
  379. #define    DC_FLOYD         1                /* einfacher Floyd-Steinberg */
  380. #define    NO_DC_BITS        1
  381.  
  382. /*----------------------------------------------------------------------------------------*/ 
  383. /* Druckereigenschaften                                                                                         */
  384. /*----------------------------------------------------------------------------------------*/ 
  385. #define    PC_FILE            0x0001        /* Drucker kann über GEMDOS-Dateien angesprochen werden */
  386. #define    PC_SERIAL        0x0002        /* Drucker kann auf der seriellen Schnittstelle angesteuert werden */
  387. #define    PC_PARALLEL     0x0004        /* Drucker kann auf der parallelen Schnittstelle angesteuert werden */
  388. #define    PC_ACSI            0x0008        /* Drucker kann auf der ACSI-Schnittstelle ausgeben */
  389. #define    PC_SCSI            0x0010        /* Drucker kann auf der SCSI-Schnittstelle ausgeben */
  390.  
  391. #define    PC_BACKGROUND    0x0080        /* Treiber kann im Hintergrund ausdrucken */
  392.  
  393. #define    PC_SCALING        0x0100        /* Treiber kann Seite skalieren */
  394. #define    PC_COPIES        0x0200        /* Treiber kann Kopien einer Seite erstellen */
  395.  
  396. /*----------------------------------------------------------------------------------------*/ 
  397. /* Moduseigenschaften                                                                                            */
  398. /*----------------------------------------------------------------------------------------*/ 
  399. #define    MC_PORTRAIT     0x0001        /* Seite kann im Hochformat ausgegeben werden */
  400. #define    MC_LANDSCAPE    0x0002        /* Seite kann im Querformat ausgegeben werden */
  401. #define    MC_REV_PTRT     0x0004        /* Seite kann um 180 Grad gedreht im Hochformat ausgegeben werden */
  402. #define    MC_REV_LNDSCP    0x0008        /* Seite kann um 180 Grad gedreht im Querformat ausgegeben werden */
  403. #define    MC_ORIENTATION 0x000f
  404.  
  405. #define    MC_SLCT_CMYK    0x0400        /* Treiber kann bestimmte Farbebenen ausgeben */
  406. #define    MC_CTRST_BRGHT 0x0800        /* Treiber kann Kontrast und Helligkeit verändern */
  407.  
  408. /*----------------------------------------------------------------------------------------*/ 
  409. /* plane_flags                                                                                                     */
  410. /*----------------------------------------------------------------------------------------*/ 
  411. #define    PLANE_BLACK     0x0001
  412. #define    PLANE_YELLOW    0x0002
  413. #define    PLANE_MAGENTA    0x0004
  414. #define    PLANE_CYAN        0x0008
  415.  
  416.  
  417. /* <driver_mode> */
  418. #define    DM_BG_PRINTING 0x0001        /* Flag für Hintergrunddruck */
  419.  
  420. /*----------------------------------------------------------------------------------------*/ 
  421.  
  422. /* <page_flags> */
  423. #define    PG_EVEN_PAGES    0x0001        /* nur Seiten mit gerader Seitennummer ausgeben */
  424. #define    PG_ODD_PAGES    0x0002        /* nur Seiten mit ungerader Seitennummer ausgeben */
  425.  
  426. /* <first_page/last_page> */
  427. #define    PG_MIN_PAGE     1
  428. #define    PG_MAX_PAGE     9999
  429.  
  430. /* <orientation> */
  431. #define    PG_UNKNOWN        0x0000        /* Ausrichtung unbekannt und nicht verstellbar */
  432. #define    PG_PORTRAIT     0x0001        /* Seite im Hochformat ausgeben */
  433. #define    PG_LANDSCAPE    0x0002        /* Seite im Querformat ausgeben */
  434.  
  435. typedef struct _prn_settings
  436. {
  437.     long    magic;                            /* 'pset' */
  438.     long    length;                            /* Strukturlänge */
  439.     long    format;                            /* Strukturtyp */
  440.     long    reserved;
  441.  
  442.     long    page_flags;                     /* Flags, u.a. gerade Seiten, ungerade Seiten */
  443.     short first_page;                     /* erste zu druckende Seite */
  444.     short last_page;                        /* letzte zu druckende Seite */
  445.     short no_copies;                        /* Anzahl der Kopien */
  446.     short orientation;                    /* Drehung */
  447.     long    scale;                            /* Skalierung: 0x10000L entspricht 100% */
  448.  
  449.     short driver_id;                        /* VDI-Gerätenummer */
  450.     short driver_type;                    /* Typ des eingestellten Treibers */
  451.     long    driver_mode;                    /* Flags, u.a. für Hintergrunddruck */
  452.     long    reserved1;
  453.     long    reserved2;
  454.     
  455.     long    printer_id;                     /* Druckernummer */
  456.     long    mode_id;                         /* Modusnummer */
  457.     short mode_hdpi;                        /* horizontale Auflösung in dpi */
  458.     short mode_vdpi;                        /* vertikale Auflösung in dpi */
  459.     long    quality_id;                     /* Druckmodus (hardwäremäßige Qualität, z.B. Microweave oder Econofast) */
  460.  
  461.     long    color_mode;                     /* Farbmodus */
  462.     long    plane_flags;                    /* Flags für auszugebende Farbebenen (z.B. nur cyan) */
  463.     long    dither_mode;                    /* Rasterverfahren */
  464.     long    dither_value;                    /* Parameter für das Rasterverfahren */
  465.  
  466.     long    size_id;                         /* Papierformat */
  467.     long    type_id;                         /* Papiertyp (normal, glossy) */
  468.     long    input_id;                        /* Papiereinzug */
  469.     long    output_id;                        /* Papierauswurf */
  470.  
  471.     long    contrast;                        /* Kontrast: 0x10000L entspricht Normaleinstellung */
  472.     long    brightness;                     /* Helligkeit: 0x1000L entspricht Normaleinstellung */
  473.     long    reserved3;
  474.     long    reserved4;
  475.  
  476.     long    reserved5;
  477.     long    reserved6;
  478.     long    reserved7;
  479.     long    reserved8;
  480.  
  481.     char    device[128];                    /* Dateiname für den Ausdruck */
  482.  
  483.     struct
  484.     {
  485.         char    inside[120];
  486.     } mac_settings;
  487. } PRN_SETTINGS;
  488.  
  489.  
  490. /* <dialog_flags> für pdlg_create() */
  491. #define PDLG_3D                0x0001
  492.  
  493. /* <option_flags> für pdlg_open/do() */
  494. #define PDLG_PREFS            0x0000            /* Einstelldialog anzeigen */
  495. #define PDLG_PRINT            0x0001            /* Druckdialog anzeigen */
  496.  
  497. #define PDLG_ALWAYS_COPIES 0x0010            /* immer Kopien anbieten */
  498. #define PDLG_ALWAYS_ORIENT 0x0020            /* immer Querformat anbieten */
  499. #define PDLG_ALWAYS_SCALE    0x0040            /* immer Skalierung anbieten */
  500.  
  501. #define    PDLG_EVENODD        0x0100            /* Option für gerade und ungerade Seiten anbieten */
  502.  
  503. /* <button> für pdlg_evnt()/pdlg_do */
  504. #define    PDLG_CANCEL 1                            /* "Abbruch" wurde angewählt */
  505. #define    PDLG_OK        2                            /* "OK" wurde gedrückt */
  506.  
  507. extern int    pdlg_add_printers             (PRN_DIALOG *prn_dialog, DRV_INFO *drv_info);
  508. extern int    pdlg_add_sub_dialogs         (PRN_DIALOG *prn_dialog, PDLG_SUB *sub_dialogs);
  509. extern int    pdlg_close                        (PRN_DIALOG *prn_dialog, int *x, int *y);
  510. extern PRN_DIALOG* pdlg_create             (int dialog_flags);
  511. extern int    pdlg_delete                     (PRN_DIALOG *prn_dialog);
  512. extern int    pdlg_dflt_settings            (PRN_DIALOG *prn_dialog, PRN_SETTINGS *settings);
  513. extern int    pdlg_do                            (PRN_DIALOG *prn_dialog, PRN_SETTINGS *settings, char *document_name, int option_flags);
  514. extern int    pdlg_evnt                        (PRN_DIALOG *prn_dialog, PRN_SETTINGS *settings, EVNT *events, int *button);
  515. extern int    pdlg_free_settings            (PRN_SETTINGS *settings);
  516. extern long    pdlg_get_setsize                (void);
  517. extern PRN_SETTINGS *pdlg_new_settings    (PRN_DIALOG *prn_dialog);
  518. extern int    pdlg_open                        (PRN_DIALOG *prn_dialog, PRN_SETTINGS *settings, char *document_name, int option_flags, int x, int y);
  519. extern int    pdlg_remove_printers         (PRN_DIALOG *prn_dialog);
  520. extern int    pdlg_remove_sub_dialogs     (PRN_DIALOG *prn_dialog);
  521. extern int    pdlg_save_default_settings (PRN_DIALOG *prn_dialog, PRN_SETTINGS *settings);
  522. extern int    pdlg_update                     (PRN_DIALOG *prn_dialog, char *document_name);
  523. extern int    pdlg_use_settings             (PRN_DIALOG *prn_dialog, PRN_SETTINGS *settings);
  524. extern int    pdlg_validate_settings        (PRN_DIALOG *prn_dialog, PRN_SETTINGS *settings);
  525.  
  526.  
  527.  
  528.  
  529. /*******************************************************************************
  530.  * The VDI extentsions of NVDI/FSM/Speedo
  531. */
  532.  
  533. /*
  534.  * The following functions requires EdDI version 1.x or higher
  535. */
  536. extern void        v_clsbm                (int handle);
  537. extern void        v_opnbm                (int *work_in, MFDB *bitmap, int *handle, int *work_out);
  538. extern void        vq_scrninfo            (int handle, int *work_out);
  539.  
  540.  
  541. /*
  542.  * The following functions requires NVDI version 2.x or higher
  543. */
  544. extern int        v_bez_on                (int handle);
  545. extern void        v_bez_off            (int handle);
  546. extern void        v_bez                    (int handle, int count, int *xyarr, char *bezarr, int *extent, int *totpts, int *totmoves);
  547. extern void        v_bez_fill            (int handle, int count, int *xyarr, char *bezarr, int *extent, int *totpts, int *totmoves);
  548. extern void     v_bez_qual             (int handle, int percent, int *actual);
  549.  
  550.  
  551. /*
  552.  * The following functions requires NVDI version 3.x or higher
  553. */
  554. typedef struct
  555. {
  556.     long    size;
  557.     short    format;
  558.     short    id;
  559.     short    index;
  560.     char    font_name[50];
  561.     char    family_name[50];
  562.     char    style_name[50];
  563.     char    file_name1[200];
  564.     char    file_name2[200];
  565.     char    file_name3[200];
  566.     short    pt_cnt;
  567.     short    pt_sizes[64];
  568. } XFNT_INFO;
  569.  
  570. extern void        v_ftext                (int handle, int x, int y, char *str) ;
  571. extern void        v_ftext_offset        (int handle, int x, int y, char *str, int *offset);
  572. extern void        v_getbitmap_info    (int handle, int ch, long *advancex, long *advancey, long *xoffset, long *yoffset, int *width, int *height, short **bitmap);
  573. extern void        v_getoutline        (int handle, int ch, int *xyarray, char *bezarray, int maxverts, int *numverts);
  574.  
  575. extern void        vq_devinfo            (int handle, int device, int *dev_open, char *file_name, char *device_name);
  576. extern int        vq_ext_devinfo         (int handle, int device, int *dev_exists, char *file_path, char *file_name, char *name);
  577.  
  578. extern void        vqt_advance            (int handle, int ch, long *advx, long *advy);
  579. extern int        vqt_ext_name         (int handle, int index, char *name, int *font_format, int *flags);
  580. extern void        vqt_f_extent        (int handle, char *str, int extent[]);
  581. extern void        vqt_fontheader        (int handle, char *buffer, char *pathname);
  582. extern int        vqt_name_and_id    (int handle, int font_format, char *font_name, char *ret_name);
  583. extern void        vqt_pairkern        (int handle, int ch1, int ch2, long *x, long *y);
  584. extern void        vqt_real_extent    (int handle, int x, int y, char *string, int extent[]);
  585. extern void        vqt_trackkern        (int handle, long *x, long *y);
  586. extern int        vqt_xfntinfo        (int handle, int flags, int id, int index, XFNT_INFO *info);
  587.  
  588. extern long     vst_arbpt             (int handle, long point, int *wchar, int *hchar, int *wcell, int *hcell);
  589. extern int         vst_charmap         (int handle, int mode);
  590. extern void     vst_kern                (int handle, int tmode, int pmode, int *tracks, int *pairs);
  591. extern int         vst_name             (int handle, int font_format, char *font_name, char *ret_name);
  592. extern long     vst_setsize         (int handle, long point, int *wchar, int *hchar, int *wcell, int *hcell);
  593. extern int         vst_skew             (int handle, int skew);
  594. extern void     vst_track_offset    (int handle, long offset, int pairmode, int *tracks, int *pairs);
  595. extern void     vst_width            (int handle, int width, int *char_width, int *char_height, int *cell_width, int *cell_height);
  596.  
  597.  
  598. /*
  599.  * The following functions requires NVDI version 4.x or higher
  600. */
  601. extern int    vqt_char_index        (int handle, int scr_index, int scr_mode, int dst_mode);
  602.  
  603.  
  604. /*
  605.  * The following functions requires NVDI version 5.x or higher
  606. */
  607. typedef struct
  608. {
  609.     unsigned short    reserved;
  610.     unsigned short    red;
  611.     unsigned short    green;
  612.     unsigned short    blue;
  613. } COLOR_RGB;
  614.  
  615. typedef struct
  616. {
  617.     unsigned short    cyan;
  618.     unsigned short    magenta;
  619.     unsigned short    yellow;
  620.     unsigned short    black;
  621. } COLOR_CMYK;
  622.  
  623. typedef union
  624. {
  625.     COLOR_RGB    rgb;
  626.     COLOR_CMYK    cmyk;
  627. } COLOR_ENTRY;
  628.  
  629. typedef struct
  630. {
  631.     long    magic;
  632.     long    length;
  633.     long    format;
  634.     long    reserved;
  635.  
  636.     long    map_id;
  637.     long    color_space;
  638.     long    flags;
  639.     long    no_colors;
  640.  
  641.     long    reserved1;
  642.     long    reserved2;
  643.     long    reserved3;
  644.     long    reserved4;
  645.  
  646. #ifdef __GNUC__
  647. /*
  648.  * this should be a variable array but GNU does'nt accept this :-((
  649. */
  650.     COLOR_ENTRY    colors[1];
  651. #else
  652.     COLOR_ENTRY    colors[];
  653. #endif
  654.  
  655. } COLOR_TAB;
  656.  
  657. typedef COLOR_TAB        *CTAB_PTR;
  658. typedef COLOR_TAB        *CTAB_REF;
  659.  
  660.  
  661. typedef void            INVERSE_CTAB;
  662. typedef INVERSE_CTAB    *ITAB_REF;
  663.  
  664. typedef struct    _gcbitmap
  665. {
  666.     long                magic;
  667.     long                length;
  668.     long                format;
  669.     long                reserved;
  670.  
  671.     unsigned char    *addr;
  672.     long                width;
  673.     long                bits;
  674.     unsigned long    px_format;
  675.  
  676.     long                xmin;
  677.     long                ymin;
  678.     long                xmax;
  679.     long                ymax;
  680.  
  681.     CTAB_REF            *ctab;
  682.     ITAB_REF         *itab;
  683.     long                reserved0;
  684.     long                reserved1;
  685. } GCBITMAP;
  686.  
  687.  
  688. extern long        v_color2nearest    (int handle, long color_space, COLOR_ENTRY *color, COLOR_ENTRY *nearest_color);
  689. extern unsigned long v_color2value(int handle, long color_space, COLOR_ENTRY *color);
  690. extern COLOR_TAB *v_create_ctab    (int handle, long color_space, unsigned long px_format);
  691. extern ITAB_REF v_create_itab        (int handle, COLOR_TAB *ctab, int bits );
  692. extern unsigned long    v_ctab_idx2value(int handle, int index );
  693. extern int        v_ctab_idx2vdi        (int handle, int index);
  694. extern int        v_ctab_vdi2idx        (int handle, int vdi_index);
  695. extern int        v_delete_ctab        (int handle, COLOR_TAB *ctab);
  696. extern int        v_delete_itab        (int handle, ITAB_REF itab);
  697. extern long        v_get_ctab_id        (int handle);
  698. extern int        v_get_outline        (int handle, int index, int x_offset, int y_offset, short *pts, char *flags, int max_pts);
  699. extern int        v_opnprn                (int aes_handle, PRN_SETTINGS *settings, int work_out[]);
  700. extern int        v_resize_bm            (int handle, int width, int height, long b_width, unsigned char *addr);
  701. extern void        v_setrgb                (int handle, int type, int r, int g, int b);
  702. extern long        v_value2color        (int handle, unsigned long value, COLOR_ENTRY *color);
  703. extern int        vq_ctab                (int handle, long ctab_length, COLOR_TAB *ctab);
  704. extern long        vq_ctab_entry        (int handle, int index, COLOR_ENTRY *color);
  705. extern long        vq_ctab_id            (int handle);
  706. extern int        vq_dflt_ctab        (int handle, long ctab_length, COLOR_TAB *ctab);
  707. extern long        vq_hilite_color    (int handle, COLOR_ENTRY *hilite_color);
  708. extern int        vq_margins            (int handle, int *top_margin, int *bottom_margin, int *left_margin, int *right_margin, int *hdpi, int *vdpi);
  709. extern long        vq_max_color        (int handle, COLOR_ENTRY *hilite_color);
  710. extern long        vq_min_color        (int handle, COLOR_ENTRY *hilite_color);
  711. extern long        vq_prn_scaling        (int handle);
  712. extern long        vq_px_format        (int handle, unsigned long *px_format);
  713. extern long        vq_weight_color    (int handle, COLOR_ENTRY *hilite_color);
  714. extern long        vqf_bg_color        (int handle, COLOR_ENTRY *fg_color);
  715. extern long        vqf_fg_color        (int handle, COLOR_ENTRY *fg_color);
  716. extern long        vql_bg_color        (int handle, COLOR_ENTRY *fg_color);
  717. extern long        vql_fg_color        (int handle, COLOR_ENTRY *fg_color);
  718. extern long        vqm_bg_color        (int handle, COLOR_ENTRY *fg_color);
  719. extern long        vqm_fg_color        (int handle, COLOR_ENTRY *fg_color);
  720. extern long        vqr_bg_color        (int handle, COLOR_ENTRY *fg_color);
  721. extern long        vqr_fg_color        (int handle, COLOR_ENTRY *fg_color);
  722. extern long        vqt_bg_color        (int handle, COLOR_ENTRY *fg_color);
  723. extern long        vqt_fg_color        (int handle, COLOR_ENTRY *fg_color);
  724. extern void        vr_transfer_bits    (int handle, GCBITMAP *src_bm, GCBITMAP *dst_bm, int *src_rect, int *dst_rect, int mode);
  725. extern int        vs_ctab                (int handle, COLOR_TAB *ctab);
  726. extern int        vs_ctab_entry        (int handle, int index, long color_space, COLOR_ENTRY *color);
  727. extern int        vs_dflt_ctab        (int handle);
  728. extern int        vs_document_info    (int vdi_handle, int type, char *s, int wchar);
  729. extern int        vs_hilite_color    (int handle, long color_space, COLOR_ENTRY *hilite_color);
  730. extern int        vs_max_color        (int handle, long color_space, COLOR_ENTRY *min_color);
  731. extern int        vs_min_color        (int handle, long color_space, COLOR_ENTRY *min_color);
  732. extern int        vs_weight_color    (int handle, long color_space, COLOR_ENTRY *weight_color);
  733. extern int        vsf_bg_color        (int handle, long color_space, COLOR_ENTRY *bg_color);
  734. extern int        vsf_fg_color        (int handle, long color_space, COLOR_ENTRY *fg_color);
  735. extern int        vsl_bg_color        (int handle, long color_space, COLOR_ENTRY *bg_color);
  736. extern int        vsl_fg_color        (int handle, long color_space, COLOR_ENTRY *fg_color);
  737. extern int        vsm_bg_color        (int handle, long color_space, COLOR_ENTRY *bg_color);
  738. extern int        vsm_fg_color        (int handle, long color_space, COLOR_ENTRY *fg_color);
  739. extern int        vsr_bg_color        (int handle, long color_space, COLOR_ENTRY *bg_color);
  740. extern int        vsr_fg_color        (int handle, long color_space, COLOR_ENTRY *fg_color);
  741. extern int        vst_bg_color        (int handle, long color_space, COLOR_ENTRY *bg_color);
  742. extern int        vst_fg_color        (int handle, long color_space, COLOR_ENTRY *fg_color);
  743.  
  744.  
  745. #ifdef __cplusplus
  746. }
  747. #endif
  748.  
  749. #endif
  750.